package luogu;

import java.util.Scanner;

public class P1923 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
        }
        int result = quickSelect(a, 0, n - 1, k);
        System.out.println(result);
    }

    /**
     * 快速选择算法：在未排序数组中找到第k小的元素
     * @param arr 待处理数组
     * @param left 搜索范围左边界
     * @param right 搜索范围右边界
     * @param k 目标位置（第k小元素）
     * @return 第k小的元素值
     */
    private static int quickSelect(int[] arr, int left, int right, int k) {
        // 基本情况：当搜索范围只有一个元素时，直接返回该元素
        if (left == right) return arr[left];

        // 进行分区操作，获取基准元素的最终位置
        int pivotIndex = partition(arr, left, right);

        // 根据基准元素位置与目标位置k的关系决定下一步搜索方向
        if (k == pivotIndex) {
            // 基准元素正好是第k小元素，直接返回
            return arr[k];
        } else if (k < pivotIndex) {
            // 目标在基准元素左侧，递归搜索左半部分
            return quickSelect(arr, left, pivotIndex - 1, k);
        } else {
            // 目标在基准元素右侧，递归搜索右半部分
            return quickSelect(arr, pivotIndex + 1, right, k);
        }
    }

    /**
     * 分区函数：将数组分为两部分，左侧小于等于基准元素，右侧大于基准元素
     * @param arr 待分区数组
     * @param left 分区左边界
     * @param right 分区右边界（基准元素位置）
     * @return 基准元素的最终位置
     */
    private static int partition(int[] arr, int left, int right) {
        // 选择最右边的元素作为基准
        int pivot = arr[right];
        // i表示小于等于基准元素区域的边界
        int i = left;

        // 遍历[left, right)区间内的所有元素
        for (int j = left; j < right; j++) {
            // 如果当前元素小于等于基准元素
            if (arr[j] <= pivot) {
                // 将当前元素交换到小于等于基准元素的区域
                swap(arr, i, j);
                i++;
            }
        }
        // 将基准元素放到正确位置
        swap(arr, i, right);
        return i;
    }

    /**
     * 交换数组中两个位置的元素
     * @param arr 数组
     * @param i 位置i
     * @param j 位置j
     */
    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

